// 纯函数与不纯函数
//  slice / splice

let array = [1, 21, 3, 5, 7]

// 纯函数：相同的输入得到相同的输出
console.log(array.slice(0,3))
console.log(array.slice(0,3))
console.log(array.slice(0,3))

// 非纯函数： 相同的输入没有得到相同的结果
console.log(array.splice(0,3))
console.log(array.splice(0,3))
console.log(array.splice(0,3))

// 纯函数
function sum(num1, num2) {
    return num1 + num2
}
console.log(sum(3,4))
console.log(sum(3,4))
console.log(sum(3,4))

// 函数副作用
// 不纯的函数
let min = 18
function checkAge (age){
    return age >= min // 当全局变量min被改变的时候， 输入相同的变量， checkAge返回的结果不一样
}

// 纯函数（有硬编码，后续可以通过柯里化解决）
function checkPureAge (age){
    let min = 18
    return age >= min
}